﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Data;

namespace CMS_GYM
{
    public class clsKhachHangBUS
    {
        /// <summary>
        /// Đối tượng Loại mặt hàng DAO
        /// </summary>
        private clsKhachHangDAO KhachHangDAO = new clsKhachHangDAO();

        public DataTable LayBang()
        {
            return KhachHangDAO.LayBang();
        }

        public DataTable LayBangKhachHangVaThe()
        {
            return KhachHangDAO.LayBangKhachHangVaThe();
        }
        public clsKhachHangDTO LayThongTinKhachHang(string MaKhachHang)
        {
            return KhachHangDAO.LayThongTinKhachHang(MaKhachHang);
        }

        public clsKhachHangDTO LayThongTinKhachHang(decimal KhachHangId)
        {
            return KhachHangDAO.LayThongTinKhachHang(KhachHangId);
        }

        //public clsKhachHangDTO LayThongTinMotKhachHang(decimal KhachHangId)
        //{
        //    clsKhachHangDTO KhachHang = new clsKhachHangDTO();
        //    DataTable dt = LayBang();
        //    DataView dv = new DataView(dt);
        //    dv.RowFilter = "KhachHangId = " + KhachHangId.ToString();
        //    dt = dv.ToTable();
        //    foreach (DataRow dr in dt.Rows)
        //    {
        //        KhachHang.KhachHangId = decimal.Parse(dr["KhachHangId"].ToString());
        //        KhachHang.MaKhachHang = dr["MaKhachHang"].ToString();
        //        KhachHang.HoTen = dr["HoTen"].ToString();
        //        KhachHang.MaSoThue = dr["MaSoThue"] == null ? string.Empty : dr["MaSoThue"].ToString();
        //        KhachHang.NgaySinh = DateTime.Parse(dr["NgaySinh"].ToString());
        //        KhachHang.SoDienThoai = dr["SoDienThoai"] == null ? string.Empty : dr["SoDienThoai"].ToString();
        //        KhachHang.Email = dr["Email"] == null ? string.Empty : dr["Email"].ToString();
        //        KhachHang.DiaChi = dr["DiaChi"] == null ? string.Empty : dr["DiaChi"].ToString();
        //        KhachHang.SoNha = dr["SoNha"] == null ? string.Empty : dr["SoNha"].ToString();
        //        KhachHang.DuongId = dr["DuongId"] == null ? null : (int?)int.Parse(dr["DuongId"].ToString());
        //        KhachHang.PhuongXaId = dr["PhuongXaId"] == null ? null : (int?)int.Parse(dr["PhuongXaId"].ToString());
        //        KhachHang.QuanHuyenId = dr["QuanHuyenId"] == null ? null : (int?)int.Parse(dr["QuanHuyenId"].ToString());
        //        KhachHang.TinhThanhId = dr["TinhThanhId"] == null ? null : (int?)int.Parse(dr["TinhThanhId"].ToString());
        //        KhachHang.LoaiKhachHangId = int.Parse(dr["LoaiKhachHangId"].ToString());
        //        KhachHang.GhiChu = dr["GhiChu"] == null ? string.Empty : dr["GhiChu"].ToString();
        //        KhachHang.TrangThai = dr["TrangThai"] == null ? false : bool.Parse(dr["TrangThai"].ToString());
        //        KhachHang.IsLock = (dr["IsLock"].ToString() == "True") ? 1 : 0;
        //        //KhachHang.TrangThai = int.Parse(dr["TrangThai"].ToString());
        //        //KhachHang.IsLock = int.Parse(dr["IsLock"].ToString());
        //        //KhachHang.NguoiTaoId = int.Parse(dr["NguoiTaoId"].ToString());
        //        //KhachHang.NgayTao = DateTime.Parse(dr["NgayTao"].ToString());
        //        //KhachHang.NguoiChinhSuaId = int.Parse(dr["NguoiChinhSuaId"].ToString());
        //        //KhachHang.NgayChinhSua = DateTime.Parse(dr["NgayChinhSua"].ToString()); ;
        //    }
        //    return KhachHang;
        //}

        /// <summary>
        /// Lấy danh sách thẻ của một khách hàng
        /// </summary>
        /// <param name="KhachHangId"></param>
        /// <returns></returns>
        public List<clsTheDTO> LayDanhSachThe(decimal KhachHangId)
        {
            try
            {
                return new clsTheBUS().LayDanhSach(KhachHangId);

            }
            catch(Exception)
            {
                return null;
            }
        }
       
        /// <summary>
        /// Lấy bảng thẻ của một khách hàng
        /// </summary>
        /// <param name="KhachHangId"></param>
        /// <returns></returns>
        public DataTable LayBangThe(decimal KhachHangId)
        {
            try
            {
                return new clsTheBUS().LayBang(KhachHangId);

            }
            catch (Exception)
            {
                return null;
            }
        }


        /// <summary>
        /// Lấy bảng thẻ chưa thu tiền của một khách hàng
        /// </summary>
        /// <param name="KhachHangId"></param>
        /// <returns></returns>
        public DataTable LayBangTheChuaThu(decimal KhachHangId)
        {
            try
            {
                return new clsTheBUS().LayBangTheChuaThu(KhachHangId);

            }
            catch (Exception)
            {
                return null;
            }
        }

        /// <summary>
        /// Lấy danh sách thẻ chưa thu tiền của một khách hàng
        /// </summary>
        /// <param name="KhachHangId"></param>
        /// <returns></returns>
        public List<clsTheDTO> LayDanhSachTheChuaThu(decimal KhachHangId)
        {
            try
            {
                return new clsTheBUS().LayDanhSachTheChuaThu(KhachHangId);

            }
            catch (Exception)
            {
                return null;
            }
        }

        public List<clsKhuyenMaiDTO> LayDanhSachKhuyenMaiCuaMotKhachHang(decimal KhachHangId)
        {
            return new clsKhuyenMaiBUS().LayDanhSachKhuyenMaiCuaMotKhachHang(KhachHangId);
        }

        public DataTable LayBangKhuyenMaiCuaMotKhachHang(decimal KhachHangId)
        {
            return new clsKhuyenMaiBUS().LayBangKhuyenMaiCuaMotKhachHang(KhachHangId);
        }

        public DataTable LayBangKhachHangCauLong()
        {
            return KhachHangDAO.LayBangKhachHangCauLong();
        }

        public string LayMaKhachHangMoi()
        {
            return KhachHangDAO.LayMaKhachHangMoi();
         }

        public string LayMaKhachHangCauLongMoi()
        {
            return KhachHangDAO.LayMaKhachHangCauLongMoi();
        }
        /// <summary>
        /// Thêm thông tin khách hàng
        /// </summary>
        /// <param name="LoaiMatHang">
        /// MaLoaiMatHang   nvarchar(10)
        /// TenLoaiMatHang  nvarchar(255)
        /// DienGiai   ntext
        /// NgayTao  smalldatetime
        /// TrangThai int
        /// </param>
        public int Them(clsKhachHangDTO KhachHang)
        {
            return KhachHangDAO.Them(KhachHang);
        }

        public int ThemKhachHangCauLong(clsKhachHangDTO KhachHang)
        {
            return KhachHangDAO.ThemKhachHangCauLong(KhachHang);
        }

        public Boolean Them(ref clsKhachHangDTO KhachHang, ref string Error)
        {
            if (!KiemTraTonTai(KhachHang.MaKhachHang))
            {
                KhachHang.KhachHangId = KhachHangDAO.Them(KhachHang);
                if (KhachHang.KhachHangId == -1)
                {
                    Error = "Thêm khách hàng vào cơ sở dữ liệu không thành công!";
                    return false;
                }
                else
                {
                    return true;
                }

            }
            else
            {
                Error = "Khách hàng với này với mã '" + KhachHang.MaKhachHang + " đã tồn tại trong hệ thống!";
                return false;
            }
        }

        public bool KiemTraTonTai(string MaKhachHang)
        {
            return KhachHangDAO.KiemTraTonTai(MaKhachHang);
        }

        /// <summary>
        /// Sửa thông tin khách hàng
        /// </summary>
        /// <param name="LoaiMatHang">
        /// MaLoaiMatHang  nvarchar(10)
        /// TenLoaiMatHang  nvarchar(255)
        /// DienGiai  ntext
        /// </param>
        public bool Sua(clsKhachHangDTO KhachHang)
        {
            if (KhachHangDAO.Sua(KhachHang) != -1)
            {
                return true;
            }
            else
            {
                return false;
            }
        }

        /// <summary>
        /// Xóa thông tin khách hàng
        /// </summary>
        /// <param name="MaLoaiMatHang">Mã loại mặt hàng</param>
        public bool Xoa(decimal KhacHangId)
        {
            if (KhachHangDAO.Xoa(KhacHangId) != -1)
            {
                return true;
            }
            else
            {
                return false;
            }
        }

        /// <summary>
        /// Xoa khach hang tam thoi
        /// </summary>
        /// <param name="KhachHangId"></param>
        /// <returns></returns>
        public bool XoaTamThoi(decimal KhachHangId)
        {
            if (KhachHangDAO.XoaTamThoi(KhachHangId) != -1)
            {
                return true;
            }
            else
            {
                return false;
            }
        }

        public bool ThemKhuyenMai(clsKhachHangDTO KhachHang, clsKhuyenMaiDTO KhuyenMai)
        {
            if (KhachHangDAO.ThemKhuyenMai(KhachHang, KhuyenMai) != -1)
            {
                return true;
            }
            else
            {
                return false;
            }
        }

        /// <summary>
        /// Thêm khách hàng
        /// </summary>
        public bool KetThucKhuyenMai(clsKhachHangDTO KhachHang, clsKhuyenMaiDTO KhuyenMai)
        {
            if (KhachHangDAO.KetThucKhuyenMai(KhachHang, KhuyenMai) != -1)
            {
                return true;
            }
            else
            {
                return false;
            }
        }

        public DataTable ThongKeSoLuongKhachHangTheoNamTheoHang(int Nam)
        {
            return KhachHangDAO.ThongKeSoLuongKhachHangTheoNamTheoHang(Nam);
        }

        public DataTable ThongKeSoLuongKhachHangTheoNamTheoCot(int Nam)
        {
            return KhachHangDAO.ThongKeSoLuongKhachHangTheoNamTheoCot(Nam);
        }
    }
}
